package br.ufrj.ad.configuracao;

import org.apache.log4j.Logger;



public class Cenario {
	
	private static final Logger logger = Logger.getLogger(Cenario.class);
	
	public Cenario(){
	}
	
	public static Parametros getCenario(int cenario) {
		return getCenario(cenario, 1);
	}
	
	public static Parametros getCenario(int cenario, int popInicial){
		Parametros param = new Parametros();
		param.cenario = cenario;
		param.blocoRaroPrimeiro = false;
		switch (cenario) {
			case 11: 
				param.LAMBDA = 0.1;
				param.B = 1;
				param.MI = 0.1;
				param.U = 1.0;
				param.GAMA = Double.POSITIVE_INFINITY;
				param.p = 0;
				param.N0 = 0;
				break;
			case 12: 
				param.LAMBDA = 0.5;
				param.B = 1;
				param.MI = 0.1;
				param.U = 1.0;
				param.GAMA = Double.POSITIVE_INFINITY;
				param.p = 0;
				param.N0 = 0;
				break;
			case 13: 
				param.LAMBDA = 0.9;
				param.B = 1;
				param.MI = 0.1;
				param.U = 1.0;
				param.GAMA = Double.POSITIVE_INFINITY;
				param.p = 0;
				param.N0 = 0;
				break;
			case 21:
				param.LAMBDA = 0.1;
				param.B = 1;
				param.MI = 0.1;
				param.U = 1.0;
				param.GAMA = 0.1;
				param.p = 0;
				param.N0 = 0;
				break;
			case 22:
				param.LAMBDA = 0.5;
				param.B = 1;
				param.MI = 0.1;
				param.U = 1;
				param.GAMA = 0.1;
				param.p = 0;
				param.N0 = 0;
				break;
			case 23:
				param.LAMBDA = 0.9;
				param.B = 1;
				param.MI = 0.1;
				param.U = 1;
				param.GAMA = 0.1;
				param.p = 0;
				param.N0 = 0;
				break;
			case 30:
				param.LAMBDA = 0.0;
				param.B = 1;
				param.MI = 0.1;
				param.U = 1;
				param.GAMA = Double.POSITIVE_INFINITY;
				param.p = 1;
				param.N0 = popInicial;
				break;
			case 41:
				param.LAMBDA = 0.0;
				param.B = 2;
				param.MI = 1.0;
				param.U = 1.0;
				param.GAMA = 1.0;
				param.p = 1;
				param.N0 = popInicial;
				break;
			case 42:
				param.LAMBDA = 0.0;
				param.B = 2;
				param.MI = 1.0;
				param.U = 1.0;
				param.GAMA = 1.0;
				param.p = 1;
				param.N0 = popInicial;
				param.blocoRaroPrimeiro = true;
				break;
			case 43:
				param.LAMBDA = 0.0;
				param.B = 10;
				param.MI = 1.0;
				param.U = 1.0;
				param.GAMA = 1.0;
				param.p = 1;
				param.N0 = popInicial;
				break;
			case 51:
				param.LAMBDA = 0.0;
				param.B = 2;
				param.MI = 1;
				param.U = 1;
				param.GAMA = Double.POSITIVE_INFINITY;
				param.p = 1;
				param.N0 = popInicial;
				break;
			case 52:
				param.LAMBDA = 0.0;
				param.B = 2;
				param.MI = 1;
				param.U = 1;
				param.GAMA = Double.POSITIVE_INFINITY;
				param.p = 1;
				param.N0 = popInicial;
				param.blocoRaroPrimeiro = true;
				break;
			case 53:
				param.LAMBDA = 0.0;
				param.B = 10;
				param.MI = 1;
				param.U = 1;
				param.GAMA = Double.POSITIVE_INFINITY;
				param.p = 1;
				param.N0 = popInicial;
				break;
			case 61:
				param.LAMBDA = 0.0;
				param.B = 2;
				param.MI = 1;
				param.U = 0.5;
				param.GAMA = 1;
				param.p = 1;
				param.N0 = popInicial;
				break;
			case 62:
				param.LAMBDA = 0.0;
				param.B = 2;
				param.MI = 1;
				param.U = 0.5;
				param.GAMA = 1;
				param.p = 1;
				param.N0 = popInicial;
				param.blocoRaroPrimeiro = true;
				break;
			case 63:
				param.LAMBDA = 0.0;
				param.B = 10;
				param.MI = 1;
				param.U = 0.5;
				param.GAMA = 1;
				param.p = 1;
				param.N0 = popInicial;
				break;
			//Cenário EXTRA
			case 70:
				param.LAMBDA = 0.9;
				param.B = 10;
				param.MI = 0.1;
				param.U = 0.9;
				param.GAMA = Double.POSITIVE_INFINITY;;
				param.p = 1;
				param.N0 = popInicial;
				break;
			//Negativos para simular a MM1
			case -11: 
				param.LAMBDA = 0.1;
				param.B = 1;
				param.MI = 0;
				param.U = 1.0;
				param.GAMA = Double.POSITIVE_INFINITY;
				param.p = 0;
				param.N0 = 0;
				break;
			case -12: 
				param.LAMBDA = 0.5;
				param.B = 1;
				param.MI = 0;
				param.U = 1.0;
				param.GAMA = Double.POSITIVE_INFINITY;
				param.p = 0;
				param.N0 = 0;
				break;
			case -13: 
				param.LAMBDA = 0.9;
				param.B = 1;
				param.MI = 0;
				param.U = 1.0;
				param.GAMA = Double.POSITIVE_INFINITY;
				param.p = 0;
				param.N0 = 0;
				break;
			default:
				logger.error("Cenário inválido!!!");
				break;
		}
		return param;
	}
}
